﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Bymed.SpineScan.DataModel;

namespace Bymed.SpineScan.Service.Interface
{
    public interface ITestTrackingService : IService<TestTracking>
    {
        /// <summary>
        /// Search the test tracking data based on provided TestType.
        /// </summary>
        /// <param name="patient">The patient number.</param>
        /// <param name="testDateType">Selected TestDateType.</param>
        /// <returns>Matched TestTracking data list.</returns>
        IList<TestTracking> SearchByTestDateType(string patientNumber, TestDateType testDateType);

        /// <summary>
        /// Get all related TestResults by provided patient number and return all rows.
        /// </summary>
        /// <param name="patientNumber">The provided patient number.</param>
        /// <param name="testItemName">The test item name.</param>
        /// <param name="rowCount">How many rows will be returned.</param>
        /// <returns>TestTracking list contains all related TestResults.</returns>
        IList<TestTracking> GetAllRelatedTestResultsByPatientNumber(string patientNumber, string testItemName);

        /// <summary>
        /// Get all related TestResults by provided patient number and return the specified rows.
        /// </summary>
        /// <param name="patientNumber">The provided patient number.</param>
        /// <param name="testItemName">The test item name.</param>
        /// <param name="rowCount">How many rows will be returned.</param>
        /// <returns>TestTracking list contains all related TestResults.</returns>
        IList<TestTracking> GetAllRelatedTestResultsByPatientNumber(string patientNumber, string testItemName, int? rowCount);
    }
}
